/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.intrface;

import base.CGraphics;
import base.CGUI;
import java.awt.Graphics;
import java.util.LinkedList;

public class CMenu extends CGadget {
	public LinkedList<CMenuItem> Items = new LinkedList<CMenuItem>();



	@Override
	public void Draw( Graphics G, int DX, int DY ) {
		if ( Width + X > CGraphics.GetCanvasWidth() ) X = CGraphics.GetCanvasWidth() - Width;
		if ( Height + Y > CGraphics.GetCanvasHeight() ) Y = CGraphics.GetCanvasHeight() - Height;
		CGraphics.DrawFrame( G, CGraphics.MenuFrame, X, Y, Width, Height );
		for ( CGadget Gadget : Items ) {
			Gadget.Draw( G, X + DX, Y + DY );
		}
	}



	public void AddItem( CChoice Choice, int ID ) {
		if ( Height == 0 ) Height = CGUI.MenuMargins[ 2 ] + CGUI.MenuMargins[ 3 ];

		int ItemX = CGUI.MenuMargins[ 0 ];
		int ItemY = Height - CGUI.MenuMargins[ 3 ];
		int ItemWidth = CGraphics.GetMenuTextWidth( Choice.Name );
		int ItemHeight = CGraphics.GetMenuFontHeight();

		Height += ItemHeight;
		Width = Math.max( ItemWidth + CGUI.MenuMargins[ 0 ] + CGUI.MenuMargins[ 1 ], Width );

		Items.add( new CMenuItem( this, ItemX, ItemY, ItemWidth, ItemHeight, Choice, ID ) );
	}



	public void AddItem( String Name, int ID ) {
		CChoice Choice = new CChoice();
		Choice.Name = Name;
		AddItem( Choice, ID );
	}



	public void Centerize() {
		X = ( CGraphics.GetCanvasWidth() - Width ) / 2;
		Y = ( CGraphics.GetCanvasHeight() - Height ) / 2;
		for( CGadget MenuItem : Items ) {
			MenuItem.X = ( Width - MenuItem.Width ) / 2;
		}
	}
}